home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Peter Lewis / PNL Libraries / MyErrorStrings.p < prev    next >
Encoding:
Text File  |  1994-01-13  |  1.0 KB  |  53 lines  |  [TEXT/PJMM]

  1. unit MyErrorStrings;
  2.  
  3. interface
  4.  
  5.     function ErrorStr (id: integer; err: OSErr): str255;
  6.     function ErrorString (id: integer; err: OSErr; var e: str255): boolean;
  7.  
  8. implementation
  9.  
  10.     function ErrorString (id: integer; err: OSErr; var e: str255): boolean;
  11.         var
  12.             h: handle;
  13.             s, n: str255;
  14.             left: longInt;
  15.             oe: OSErr;
  16.             p: ptr;
  17.             len: integer;
  18.     begin
  19.         ErrorString := false;
  20.         NumToString(err, n);
  21.         e := n;
  22.         h := GetResource('ERRS', id);
  23.         if (h <> nil) & (h^ <> nil) then begin
  24.             HNoPurge(h);
  25.             left := GethandleSize(h);
  26.             p := h^;
  27.             while (left > 3) do begin
  28.                 BlockMove(p, @oe, 2);
  29.                 p := ptr(ord(p) + 2);
  30.                 len := BAND(p^, $FF);
  31.                 BlockMove(p, @s, len + 1);
  32.                 p := ptr(ord(p) + len + 1);
  33.                 if err = oe then begin
  34.                     e := s;
  35.                     ErrorString := true;
  36.                     leave;
  37.                 end;
  38.                 left := left - (2 + 1 + len);
  39.             end;
  40.             HPurge(h);
  41.         end;
  42.     end;
  43.  
  44.     function ErrorStr (id: integer; err: OSErr): str255;
  45.         var
  46.             dummy: boolean;
  47.             e: str255;
  48.     begin
  49.         dummy := ErrorString(id, err, e);
  50.         ErrorStr := e;
  51.     end;
  52.  
  53. end.